package com.ruoyi.merchant.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.merchant.domain.Orders;

/**
 * 订单Mapper接口
 * 
 * @author ruoyi
 * @date 2025-10-22
 */
@Mapper
public interface OrdersMapper 
{
    /**
     * 查询订单
     * 
     * @param orderId 订单主键
     * @return 订单
     */
    public Orders selectOrdersByOrderId(String orderId);

    /**
     * 查询订单列表
     * 
     * @param orders 订单
     * @return 订单集合
     */
    public List<Orders> selectOrdersList(Orders orders);

    /**
     * 新增订单
     * 
     * @param orders 订单
     * @return 结果
     */
    public int insertOrders(Orders orders);

    /**
     * 修改订单
     * 
     * @param orders 订单
     * @return 结果
     */
    public int updateOrders(Orders orders);

    /**
     * 删除订单
     * 
     * @param orderId 订单主键
     * @return 结果
     */
    public int deleteOrdersByOrderId(String orderId);

    /**
     * 批量删除订单
     * 
     * @param orderIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteOrdersByOrderIds(String[] orderIds);

    /**
     * 根据用户ID和商家ID查询最新订单
     */
    Orders selectLatestOrderByCustomerIdAndMerchantId(@Param("customerId") Long customerId,
                                                      @Param("merchantId") Long merchantId);

    /**
     * 根据订单ID查询订单商品列表
     */
    List<Map<String, Object>> selectOrderItemsByOrderId(@Param("orderId") String orderId);

    /**
     * 根据订单ID查询订单状态时间线
     */
    List<Map<String, Object>> selectOrderTimelineByOrderId(@Param("orderId") String orderId);

    /**
     * 检查订单访问权限（商家只能访问自己的订单）
     */
    boolean checkOrderAccess(@Param("orderId") String orderId, @Param("merchantId") Long merchantId);
}
